﻿namespace CommonData.Entity
{
    using CommonData.Model.Core;
    using System;
    using System.Reflection;

    public abstract class BaseEntityAbstract
    {
        protected BaseEntityAbstract()
        {
        }

        public abstract ColumnAttribute[] GetColumnAttribute<T>() where T: IEntity;
        public abstract ColumnAttribute[] GetColumnAttribute(IEntity entity);
        public abstract ColumnAttribute[] GetColumnAttribute(Type type);
        public abstract FieldInfo[] GetFieldInfo<T>() where T: IEntity;
        public abstract FieldInfo[] GetFieldInfo(IEntity entity);
        public abstract FieldInfo[] GetFieldInfo(Type type);
        public abstract LinkTableAttribute[] GetLinkTableAttribute<T>() where T: IEntity;
        public abstract LinkTableAttribute[] GetLinkTableAttribute(IEntity entity);
        public abstract LinkTableAttribute[] GetLinkTableAttribute(Type type);
        public abstract LinkTablesAttribute[] GetLinkTablesAttribute<T>() where T: IEntity;
        public abstract LinkTablesAttribute[] GetLinkTablesAttribute(IEntity entity);
        public abstract LinkTablesAttribute[] GetLinkTablesAttribute(Type type);
        public abstract PropertyInfo[] GetPropertyInfo<T>() where T: IEntity;
        public abstract PropertyInfo[] GetPropertyInfo(IEntity entity);
        public abstract PropertyInfo[] GetPropertyInfo(Type type);
        public abstract TableInfo GetTableInfo<T>() where T: IEntity;
        public abstract TableInfo GetTableInfo(IEntity entity);
        public abstract TableInfo GetTableInfo(Type type);
    }
}

